Expand description
§Example:
ⓘ
use serde::Deserialize;
// A trait that the Validate derive will impl
use validator::{Validate, ValidationError};
#[derive(Debug, Validate, Deserialize)]
struct SignupData {
#[validate(email)]
mail: String,
#[validate(url)]
site: String,
#[validate(length(min = 1), custom(function = "validate_unique_username"))]
#[serde(rename = "firstName")]
first_name: String,
#[validate(range(min = 18, max = 20))]
age: u32,
}
fn validate_unique_username(username: &str) -> Result<(), ValidationError> {
if username == "xXxShad0wxXx" {
// the value of the username will automatically be added later
return Err(ValidationError::new("terrible_username"));
}
Ok(())
}
match signup_data.validate() {
Ok(_) => (),
Err(e) => return e;
};
§Available Validations:
Validation | Notes |
---|---|
email | |
url | |
length | |
range | |
must_match | |
contains | |
does_not_contain | |
custom | |
regex | |
credit_card | (Requires the feature card to be enabled) |
non_control_character | (Required the feature unic to be enabled) |
required |
Checkout the project README of an in-depth usage description with examples.
§Installation:
Add the validator to the dependencies in the Cargo.toml file.
[dependencies]
validator = { version = "0.16", features = ["derive"] }
Structs§
Enums§
Traits§
- This is the original trait that was implemented by deriving
Validate
. It will still be implemented for struct validations that don’t take custom arguments. The call is being forwarded to theValidateArgs<'v_a>
trait. - This trait will be implemented by deriving
Validate
. This implementation can take one argument and pass this on to custom validators. The defaultArgs
type will be()
if there is no custom validation with defined arguments. - Validates whether the given string is an email based on the HTML5 spec. RFC 5322 is not practical in most circumstances and allows email addresses that are unfamiliar to most users.
- Validates the length of the value given. If the validator has
equal
set, it will ignore anymin
andmax
value. - Validates that the given
value
is inside the defined range. Themax
,min
,exclusive_max
andexclusive_min
parameters are optional and will only be validated if they are notNone
- Validates whether the given Option is Some
- Validates whether the string given is a url
Functions§
- Validates that the 2 given fields match. Both fields are optionals